package br.com.sgpv2.hibernate.contrato;

import java.util.List;

import br.com.sgpv2.controler.NegocioExeception;
import br.com.sgpv2.entity.pessoa.Contrato;
import br.com.sgpv2.entity.pessoa.Pessoa;

/**
 * Interface do reposit�rio de Contrato.
 */
public interface ContratoRepository {

	/** Método que salva uma entidade contrato no banco de dados. */
	void salvar(Contrato contrato);

	/** Método que busca uma entidade contrato no banco de dados. */
	Contrato buscar(Integer pk) throws NegocioExeception;

	/** Método que altera uma entidade contrato no banco de dados. */
	void alterar(Contrato contrato);

	/** Método que altera uma entidade contrato no banco de dados. */
	void saveOrUpdate(Contrato contrato);

	/** Método que lista todas as entidades contrato no banco de dados. */
	List<Contrato> listar();

	/** Método que exclui uma entidade contrato no banco de dados. */
	void excluir(Contrato contrato);

	/** Método consulta todos os contratos de uma determinada pessoa(titular). */
	List<Contrato> consultarPorTitular(Pessoa pessoa);

	Contrato buscarPorMatricula(String matriculaContrato);

}
